package net.lzzy.practices.service;

import net.lzzy.practices.entities.Applicant;
import net.lzzy.practices.entities.Course;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.UUID;

public interface ApplicantService {
    Applicant apply(UUID studentId, UUID courseId, String token, Course course);
    List<Applicant> getAllCourses(UUID student,String token);
    List<Applicant> getEnrolledCourses(UUID studentId,String token);
    List<Applicant> getApplyingCourses(UUID studentId,String token);
    List<Applicant> getDeclinedCourses(UUID studentId,String token);
    Applicant approve(UUID applicantId,String token);
    Applicant decline(UUID applicantId,String token);
    List<Applicant> getEnrolledStudents(UUID courseId,String token);
    List<Applicant> getApplyingStudents(UUID courseId,String token);
    List<Applicant> getDeclinedStudents(UUID courseId,String token);
    Course removeStudent(UUID courseId, String token, UUID studentId);

    @Transactional(rollbackFor = Exception.class)
    Course removeStudent(UUID courseId, UUID studentId, String token);
}
